package main

import "fmt"
import "time"
import "sync"

var wg sync.WaitGroup
var syncWaitGroup sync.WaitGroup //创建同步等待任务组

func main() {
	wg.Add(2)
	go fun1()
	go fun2()
	fmt.Println("main进入阻塞状态，等待wg中的子goroutine结束。")
	wg.Wait() //表示main goroutine进入等待，意味着阻塞
	fmt.Println("main，解除阻塞。")
}

func fun1() {
	fmt.Println("进入func1函数")
	for i := 1; i <= 10; i++ {
		fmt.Println("fun1.函数中的i:", i)
	}
	wg.Done() //给wg等待中的执行的goroutine数量减1.同Add(-1)
}
func fun2() {
	fmt.Println("进入func2函数")
	defer wg.Done()
	for j := 1; j <= 10; j++ {
		fmt.Println("\tfun2.函数中的j：", j)
	}
}

//var (
//	c = 90
//	d = "hello"
//)

// var(
// 	c = 90
// 	d = "hello"
// )

func waitCookOperation() {
	wg.Add(2)
	go cook("1号")
	go cook("2号")
	// go cook("3号")
	wg.Wait()
}

func cook(cookerNum string) {
	defer wg.Done()
	fmt.Println(cookerNum, "厨师正在工作中...")
	// time.Sleep(time.Second)
	time.Sleep(5 * time.Second)
	fmt.Println(cookerNum, "厨师这道菜做好了")
}
